package main

func main() {
	/*
		1，go build:
			完成了源码的编译与可执行文件的生成。
			接收参数为 .go文件或目录，默认情况下编译当前目录下所有的.go文件。
				在 main包 下执行会生成相应的可执行文件
				在 非main包 下，它会做一些检查，生成的库文件放在缓存目录下，在工作目录下并无新文件生成。

		2.go build 选项（在 run 下也可以用）：
			-n	不执行地打印流程中用到的命令
			-x  执行并打印流程中用到的命令，要注意下它与 -n 选项的区别
			-work  打印编译时的临时目录路径，并在结束是保留。默认情况下，编译结束会删除该临时目录

		3.go build 编译流程：
			-n命令查看
			（1）创建临时目录
			（2）查找依赖信息
			（3）执行源代码编译
			（4）收集链接库文件
			（5）生成可执行文件
			（6）移动可执行文件
		优化后流程如下：
			我们把 build 过程细化为两部分，compile 与 link，即编译和链接。
				源码	 ➩	编译	 ➩	连接	 ➩	可执行文件

		4.go run执行流程：
			使用 go run -x Name.go 查看执行过程
		与 build 不同的是，在 link 生成文件以后，并没有把它移动到当前目录，而是通过$WORK\b001\exe...执行了程序。
			源码 ➩ 编译 ➩ 连接 ➩ 可执行文件 ➩ 执行输出

		5.通过 -work 保留可执行文件
			这个临时生成的可执行文件，默认是不会保留下来的，go run 最后会把临时目录删掉。
			但是我们可以通过 go run -x --work Name.go 保留这个目录

			通过 mv 命令就可以将run生成的hello文件拷贝到当前目录
	*/
}
